"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var seasons = [
    Seasons.Spring,
    Seasons.Summer,
    Seasons.Autumn,
    Seasons.Winter
];
// declare 定义的类型只会用于编译时的检查，编译结果中会被删除 所以编译完之后Seasons 不存在会报错
console.log(seasons);
var seasons2 = [
    0 /* Spring */,
    1 /* Summer */,
    2 /* Autumn */,
    3 /* Winter */
];
console.log(seasons2); // [ 0, 1, 2, 3 ]
// namespace 如果一个变量有很多子属性  就可以用namespace  声明文件中的namespace表示一个全局变量包含很多子属性
// declare namespace $ {
//   function ajax(): void
//   let name: string
//   namespace fn {
//     function extend(): void
//   }
// }
// $.ajax()
// 类型声明文件
/**
  可以把类型声明放在一个单独的类型声明文件中
  在类型声明文件中使用类型声明
  文件命名规范为*.d.ts
  观看类型声明文件有助于了解库的使用方式
 */
$.click('#'); // 由于在typing.d.ts中声明过  并且在tsconfig的include中包含进去了  所以这里可以直接使用
String.prototype.double = function () {
    return this + this;
};
var dbhello = new String('hello').double();
// 命名空间
var Form = /** @class */ (function () {
    function Form() {
    }
    return Form;
}());
(function (Form) {
    var Item = /** @class */ (function () {
        function Item() {
        }
        return Item;
    }());
    Form.Item = Item;
})(Form || (Form = {}));
// 为函数扩展属性
function hello() {
}
(function (hello) {
    hello.words = '';
})(hello || (hello = {}));
hello.words;
// 使用命名空间扩展枚举属性
var Color;
(function (Color) {
    Color[Color["red"] = 1] = "red";
    Color[Color["yellow"] = 2] = "yellow";
    Color[Color["bule"] = 3] = "bule";
})(Color || (Color = {}));
(function (Color) {
    Color.green = 4;
    Color.purple = 5;
})(Color || (Color = {}));
Color.purple;
